package com.platform.common.utils.mch.config;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Configuration;

import java.util.HashMap;
import java.util.Map;

@Configuration
public class MchConfig {

    /**
     * 密钥
     */
    @Value("${mch.key}")
    private static String key = "1234567890123456789012";

    /**
     * 当前系统编号
     */
    @Value("${mch.systemCode}")
    private static String systemCode = "1001";

    /**
     * 联联商品 站点ID
     */
    @Value("${mch.locationId}")
    private static String locationId = "2";

    /**
     * 第三方平台基础请求地址
     */
    @Value("${mch.baseUrl}")
    private static String baseUrl = "http://127.0.0.1:8081/mch/out/";

    public static String getKey() {
        return key;
    }

    public static String getSystemCode() {
        return systemCode;
    }

    public static String getLocationId() {
        return locationId;
    }

    public enum Url {
        /**
         * 下单
         */
        order("mchOrder/order"),
        /**
         * 分页查询商品
         */
        queryGoods("mchGoods/queryGoods"),
        /**
         * 分页查询联联商品 （包括详情）
         */
        queryLLGoods("mchGoods/queryLLGoods"),
        /**
         * 查询库用库存
         */
        getStock("mchNumlock/getStock"),
        /**
         * 库存锁定
         */
        lockStock("mchNumlock/lockStock");

        private final String url;

        public String getUrl() {
            return baseUrl + url;
        }

        Url(String url) {
            this.url = url;
        }
    }

    /**
     * 订单类型
     */
    public enum OrderType {

        /**
         * 联联订单
         */
        LL(2, 1),
        /**
         * 交易宝订单
         */
        JYB(3, 2);

        private static Map<Integer,Integer> map = new HashMap<>();
        static {
            map.put(2,1);
            map.put(3,2);
        }

        public static Integer getOrderType(Integer type){
            return map.get(type);
        }

        /**
         * 订单类型
         */
        private final Integer type;
        /**
         * 商品类型
         */
        private final Integer goodsType;

        public Integer getType() {
            return type;
        }

        OrderType( Integer goodsType,Integer type){
            this.type = type;
            this.goodsType = goodsType;
        }

    }

}
